package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Result;
import org.jsola.hr.dto.EmpTagDTO;
import org.jsola.hr.query.CompanyIdSQuery;
import org.jsola.hr.vo.EmpTagVO;

import java.util.List;

/**
 * @author wcl
 */
@Api(tags = "hr-员工标签")
public interface IEmpTagControllerAPI {

    /**
     * 新增员工标签
     *
     * @param empTagDTO 员工标签实体
     * @return 员工标签
     */
    @ApiOperation(value = "新增员工标签")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empTagAddDTO", dataType = "EmpTrainAddDTO", value = "新增员工标签", paramType = "body")
    })
    Result<EmpTagVO> save(EmpTagDTO empTagDTO);


    /**
     * 删除员工标签
     *
     * @param empTagDTO 员工标签实体
     * @return 删除数量
     */
    @ApiOperation(value = "删除员工标签")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "empTagDTO", dataType = "EmpTagDTO", value = "员工标签", paramType = "body")
    })
    Result<Integer> delete(EmpTagDTO empTagDTO);

    /**
     * 根据用工单位id查询员工标签
     *
     * @param companyId 用工单位id
     * @return 员工标签
     */
    @ApiOperation(value = "根据用工单位id查询员工标签")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyId", dataType = "String", value = "用工单位id", paramType = "query")
    })
    Result<List<EmpTagVO>> listByCompanyId(String companyId);


    /**
     * 根据用工单位ids查询员工标签
     *
     * @param companyIds 用工单位ids
     * @return 员工标签
     */
    @ApiOperation(value = "根据用工单位ids查询员工标签 传null 查询所有")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyIds", dataType = "String", value = "用工单位id", paramType = "query")
    })
    Result<List<EmpTagVO>> listByCompanyIds(String companyIds);

    /**
     * 根据用工单位ids查询员工标签
     *
     * @param companyIdSQuery 查询参数
     * @return 员工标签
     */
    @ApiOperation(value = "根据用工单位ids查询员工标签 传null 查询所有")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companyIdSQuery", dataType = "CompanyIdSQuery", value = "查询参数", paramType = "body")
    })
    Result<List<EmpTagVO>> listByCompanyIds(CompanyIdSQuery companyIdSQuery);



}
